import axios from "axios";
import qs from "querystring"

//推荐参考文档，axios看云网站：https://www.kancloud.cn/yunye/axios/234845/

const errorHandle = (status,info) => {
    switch(status){
    case 400:
        console.log("语义有误");
        break;
    case 401:
        console.log("服务器认证失败");
        break;
    case 403:
        console.log("服务器拒绝访问");
        break;
    case 404:
        console.log("地址错误");
        break;
    case 500:
        console.log("服务器遇到意外");
        break;
    case 502:
        console.log("服务器无响应");
        break;
    default:
        console.log(info);
        break;
    }
}

const instance = axios.create({
    //网络请求的公共配置
    timeout:5000
})

//发送数据之前拦截
instance.interceptors.request.use(
    config =>{
        if(config.method === "post"){
            config.data = qs.stringify(config.data)
        }
        //config包含网络请求的所有信息
        return config;
    },
    error => Promise.reject(error)
)

//接收数据之前拦截
instance.interceptors.response.use(
    response => response.status === 200 ?
    Promise.resolve(response) :
    Promise.reject(response),
    //我们需要关注错误的处理
    error =>{
        const { response } = error;
        errorHandle(response.status,response.info)
    }
)

//导出
export default instance;